package es.webapp.exiquets.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import es.webapp.exiquets.domain.entities.Categoria;
import es.webapp.exiquets.domain.entities.Producto;
import es.webapp.exiquets.repository.CategoriaDAO;
import es.webapp.exiquets.repository.ProductosDAO;
import es.webapp.exiquets.utils.UserSessionHelper;

@Component(value="gestorProductos")
public class GestorProductosImpl implements GestorProductos {

    private static final long serialVersionUID = 1L;
    
    @Autowired
    private ProductosDAO productDao;
    @Autowired
    private CategoriaDAO categoriaDao;
    
    public void setProductoDao(ProductosDAO productDao) {
        this.productDao = productDao;
    }

    public List<Producto> getProductos() {
    	return productDao.findAll();      
    }

	public void registraProducto(Producto p) {
		p.setCategoriaBean(categoriaDao.findOne(p.getCategoriaBean().getIdCategorias()));
		productDao.update(p);
	}

	public void setCategoriaDao(CategoriaDAO categoriaDao) {
		this.categoriaDao = categoriaDao;
		
	}

	public void altaCategoria(Categoria c) {
		this.categoriaDao.save(c);
		
	}

	public List<Categoria> listaCategorias() {
		return this.categoriaDao.findAll();
	}
	
	public Categoria getCategoria(int id){
		return this.categoriaDao.findOne(id);
	}

	public void updateProductos(Producto p) {
		this.productDao.update(p);
		UserSessionHelper.deleteUserSession();
	}
	
	public void updateCategoria(Categoria c){
		this.categoriaDao.update(c);
	}
	
	public void deleteCategoria(Categoria c){
		this.categoriaDao.delete(c);
	}

	public void eliminarProducto(Producto p) {
		this.productDao.delete(p);
	}
}
